package com.moonLight.weblog.jwt.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 配置类，用于定义如何创建和配置应用程序中使用的Bean
 * PasswordEncoder 接口是 Spring Security 提供的密码加密接口，它定义了密码加密和密码验证的方法。
 * 通过实现这个接口，您可以将密码加密为不可逆的哈希值，以及在验证密码时对比哈希值。
 */
@Configuration
public class PasswordEncoderConfig {

    // 定义一个Bean，用于创建PasswordEncoder实例
    @Bean
    public PasswordEncoder passwordEncoder() {
        // BCrypt 是一种安全且适合密码存储的哈希算法，它在进行哈希时会自动加入“盐”，增加密码的安全性。
        return new BCryptPasswordEncoder();
    }

    // 主函数，用于测试BCryptPasswordEncoder的密码编码功能
    public static void main(String[] args) {
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        // 对密码 "quanxiaoha" 进行编码，并打印编码后的结果
        System.out.println(encoder.encode("789789"));
    }
}

